home *** CD-ROM | disk | FTP | other *** search
- Poniewa¿ nikt nie odpowiedzia³ na moje ww. pytanie, to sam sobie
- odpowiem ;). Mo¿e innym siê przyda... A wiec jaki¶ czas temu napisa³em
- co¶ takiego:
-
- Kto by przypuszcza³, ¿e z tak banaln± funkcj± mog± byæ problemy. A jednak...
- Poni¿szy przyk³ad zilustruje o co chodzi.
-
- -> Problem z AddPart()
- PROC main()
- DEF file[256]:STRING,tmp[256]:STRING
- -> przypadek 1 - z³e dzia³anie
- StrCopy(file,'Dysk:Katalog')
- AddPart(file,'Plik',256)
- StrAdd(file,'-bla')
- PrintF('Wynik 1: \s\n',file)
- -> przypadek 2 - poprawne dzia³anie
- StrCopy(file,'Dysk:Katalog')
- AddPart(file,'Plik',256)
- StrCopy(tmp,file)
- StrAdd(tmp,'-bla')
- PrintF('Wynik 2: \s\n',tmp)
- ENDPROC
-
- A oto co ten program u mnie wypluwa na konsolê:
- 10.Ram Disk:> test
- Wynik 1: Dysk:Katalog-bla ; z³e dzia³anie
- Wynik 2: Dysk:Katalog/Plik-bla ; poprawne dzia³anie
-
- Zupe³nie jakby StrAdd() nie zauwa¿a³o, ¿e wcze¶niej co¶ zosta³o
- AddPart()'owane do ci±gu.
-
- Tak wiêc z przypdaku pierwszego wynika³oby, ¿e AddPart() jest jako¶
- niekompatybilne z E stringami. Dlatego pytam:
- a) czy ten program u wszystkich daje takie rezultaty (mo¿e to wina jakiej¶
- nak³adki)
- b) z czego to wynika
-
- No i odpowied¼:
- Problem tkwi w tym, ¿e e-stringi nie s± kompatybilne "w dó³" ze zwyk³ymi
- stringami. E-string od zwyk³ego ró¿ni siê tym, ¿e ma zapisane informacje
- o aktualnej i maksymalnej d³ugo¶ci. Wszystkie funkcje operuj±ce na
- e-stringach musz± utrzymywaæ te informacje zaktualizowane. Niestety
- AddPart() tego nie robi i dlatego nastêpuj±ce StrAdd() nie widzi, ¿e co¶
- zosta³o dodane.
-
- Obej¶æ to mo¿na stosuj±c pomocniczy ci±g tmp, jak zrobi³em to
- w powy¿szym przyk³adzie, albo u¿ywaj±c zwyk³ych stringów zamiast
- e-stringów.
-
- --
- +-Misha/El Condor Software-------------misha@friko2.onet.pl
- | A1200T / 6 MB RAM / 850 MB HDD / 4x CD / USR 33.6 / 1084S
- +-------------------------------Intel inside, idiot outside
-
-